// -----------------------------------------------------------------------
//  <copyright file="DomainEvent.cs" company="LiuliuSoft">
//      Copyright (c) 2022-2024 DaprPlus. All rights reserved.
//  </copyright>
//  <site>https://dapr.plus</site>
//  <last-editor>郭明锋</last-editor>
//  <last-date>2024/12/19 18:38</last-date>
// -----------------------------------------------------------------------

namespace DaprPlus.Domain.Events;

/// <summary>
/// 1. 领域事件，领域内触发的事件，领域事件处理使用Mediator实现。
/// 2. 事件溯源记录，用于存储实体数据变更的历史记录，事件溯源使用EventStore包装并持久化。
/// </summary>
public abstract record DomainEvent()
{
    /// <summary>
    /// 事件唯一标识
    /// </summary>
    public Guid EventId { get; } = Guid.NewGuid();

    /// <summary>
    /// 事件创建时间
    /// </summary>
    public DateTime EventTime { get; } = DateTime.UtcNow;

    /// <summary>
    /// 事件源，引发事件的位置
    /// </summary>
    public string? EventSource { get; set; }
}
